#include<bits/stdc++.h>
#define int long long
using namespace std;
const int p=1e9+7;
inline int qpow(int a,int b){
  int r=1;
  while(b){
    if(b&1)(r*=a)%=p;
    (a*=a)%=p,b>>=1;
  }
  return r;
}
main(){
  freopen("zha.in","r",stdin);
  freopen("zha.out","w",stdout);
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  int n; cin>>n;
  vector<int> a(n),b(n);
  for(auto &i:a)cin>>i,i--;
  for(auto &i:b)cin>>i,i--;
  int m=(n<<1)-2;
  if(n<=10){
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());
    set<int> s;
    for(int i=0;i<1<<m;i++)
      if(__builtin_popcount(i)==n-1){
        int c=0; auto x=a,y=b;
        for(int j=0;j<m;j++)
          if(i>>j&1)c=c*10+x.back(),y.pop_back();
          else c=c*10+y.back(),x.pop_back();
        s.emplace(c);
      }
    cout<<s.size()<<endl;
  }
  else{
    n--; vector<int> f(n<<1|1);
    for(int i=f[0]=1;i<=n<<1;i++)
      f[i]=f[i-1]*i%p;
    cout<<f[n<<1]*qpow(f[n]*f[n+1]%p,p-2)%p<<endl;
  }
  return 0;
}